Intellij(Pycharm)でPytestを実行する
はじめに
データアナリティクス事業本部のkobayashiです。
pythonでの開発にIDEとしてIntellij(Pycharm)を使っていますが、テストフレームワークとしてPytestを使う場合にIntellijは非常に強直な機能を提供してくれます。今回はこの機能を紹介したいと思います。
Intellij(Pycharm)でPytestを実行する
IntellijでのPytest環境の設定
IntellijでPytestを実行するのは非常に簡単で難しい設定も必要ありません。前提条件としてはPytestがインストールされいているだけです。PytestをインストールするのはIntellijのProject Structureで設定してあるPython実行環境になります。これにはIntellijのTerminalから以下のコマンドでインストールするだけです。
$ pip install pytest
環境の整備はこれだけです。では実際にテストを実行してみたいと思います。テストは以前のエントリで記述した以下のテストを行ってみます。
IntellijでPytestを実行する
ディレクトリ構成は以下のような構成になっているとします。
スクリプトのディレクトリに実行対象のファイルmain.py
があり、そこに並列な形でテストファイルを置くtests
のディレクトリがありその中にPytestで使うtest_main.py
とtest_main_2.py
があります。
次にFIle > Project Structure
からIntellij上での各ディレクトリの役割を設定します。
pytest-parm
のディレクトリはテスト対象のあるメインのスクリプトがあるのでSource
、tests
のディレクトリはPytestで使うテストファイルがあるのでTests
を設定します。
次にPytestの実行設定を行います。
Intellijの右上のEdit Configration
からテストの設定に進みます。
テストの設定画面が開くので左上の+ボダンを押下してPython tests > pytest
を選択します。
Run/Debug Configrations
が開くのでここでPytestの設定を行います。設定する内容は以下になります。
- Target
- Module name: テストモジュール(や関数)の名前を指定
- Script path: テストファイルのパスを指定
- Custom:
-m
でマーカーを付けたテストの実行など
- Environment:
- Environment variables: テスト実行時に使う環境変数を設定
- Python interpreter: Pytestを実行するPython実行環境
- Interpreter options: Python実行環境のオプション
- Working directory: Pytestを実行するディレクトリ
- TargetでCustomを設定した場合にはほぼ必須となる
今回はtests
以下のテストをすべて実行したいのでTarget
でScript path
でpytest-param/tests
を指定します。これでPytestでのテスト対象も設定できたのでPytestを実行します。
メインメニュー右上のRun/Debug設定で先に設定したテスト名を選択してRun 'テスト名'
を実行すると以下のようにテスト結果が一覧でわかりやすく表示されます。
Intellijではこのようなテスト結果の表示だけでなくここからテストコードを操作する事もできるのが大変便利です。
例えばエラーになったテストケースをクリックすると対象となるテストケースがエディタで開き、すぐに原因調査と修正することが可能です。
コードカバレッジの確認
Pythonパッケージのcoverage
をインストールすることでIntellijの画面上でコードカバレッジを確認することができます。
メインメニュー右上のRun/Debug設定でRun 'テスト名' with Coverage
を実行します。
実行結果として右のCoverageウィウンドにディレクトリ、ファイル毎にカバー率が表示されます。またファイルをクリックするとエディタにファイルが表示され行にテストの実行状況が色分けで表示されるのでどのようなテストケースを追加すべきかがすぐに分かります。
まとめ
pythonでテストフレームワークとしてPytestを使う場合にIDEとしてIntellij(Pycharm)で使える機能を紹介しました。Intellijは非常に強直な機能を提供してくれていて、自分としてはこれらはPythonの開発には欠かせないツールになっています。Pytestの他にもVersion ControlであるGitの拡張機能も非常に強力なのでまた紹介したいと思います。
最後まで読んで頂いてありがとうございました。